Skip to content

fix(sync): 允许 Codex 活跃尾部安全追加 - #96

Merged
catoncat merged 3 commits into
mainfrom
agent/fix-codex-active-append-sync
Jul 12, 2026
Merged

fix(sync): 允许 Codex 活跃尾部安全追加#96
catoncat merged 3 commits into
mainfrom
agent/fix-codex-active-append-sync

Conversation

@catoncat

Copy link
Copy Markdown
Owner

Mainline Intent

Intent: int_1d2b578a
Status: proposed
Title: 允许活跃 Codex 尾部安全同步

What changed

Codex 同步改为在同一文件句柄上按起始边界有界读取并记录读取证明;可证明的纯追加提交起始快照并标记 soft stale,无法证明的新活跃文件延后且不阻断稳定 source,截断、前缀重写和 source 替换仍拒绝。同步更新 CLI JSON 合同、用户文案、发布 skill 与 0.3.18 版本。

Why

当前 Codex 对话在正常使用中会持续增长,纯尾部追加不应让全量或 scoped sync 整体失败;同时 coverage 只能描述确实读取并验证的边界,不能用宽松忽略掩盖已读区间被破坏。

Decisions

  • 如何区分纯追加与破坏性变化: 同一 FileHandle 上读取前后 fstat、同 fd 有界流、精确字节 SHA-256 前缀证明,并与既有索引投影核对 (只有证明本次解析对应起始快照且已索引前缀未被改写,才能安全提交部分进度)
    • Rejected: 仅比较路径、大小或 mtime
    • Rejected: 忽略所有 source_content_changed
  • 无法证明的新活跃文件如何处理: 延后该文件,提交同批稳定文件,不写完整 coverage,并返回 active_source_deferred/sync (保留可完成工作,又不发布覆盖未稳定读取内容的自相矛盾 coverage)
    • Rejected: 整次事务失败
    • Rejected: 把未读尾部算入 fresh coverage
  • 可证明的读取后纯追加如何表达: 写入起始快照 coverage,标记 source_content_changed/query,允许现有索引继续查询并提示后续增量同步 (索引在已读边界内一致且可用,但不能误报完整新鲜)
  • 哪些 source 允许该策略: 仅限 Codex JSONL;Claude Code 与 Pi 保持原有严格变化门禁 (当前证明模型只针对 Codex 追加式会话格式,不能外推到语义不同的 source)

Subsystems: README.md, docs, package-lock.json, package.json, skill-packages, src

@catoncat
catoncat merged commit b795b6a into main Jul 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant